package cn.biplam.common.bean.md;

import java.io.Serializable;

import cn.biplam.common.bean.Bean;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.common.wrapper.sqlresult.SqlResult;

/**
 * 模型表数据操作类。
 *   <li>此类提供对某个模型类型下的所有表的遍历
 * @author WangSong 2009-10-28下午12:06:27
 * @version 1.0
 */
public abstract class MdTableAll extends Bean implements Serializable{
	
	/**Md对象信息 */
	protected SqlResult sr;
	/**Md对象类型 */
	protected String modelType;
	/**用户信息 */
	protected String userId;
	/**结果集游标信息 */
	protected int icount=-1;
	
	/** 表id字段名 */
	protected String OID;
	/** 表名称字段名 */
	protected String TABLE_NAME;
	/** 表中文名字段名 */
	protected String TABLE_CNAME;
	/** 表说明字段名 */
	protected String TABLE_DESC;
	
	/**
	 * 是否还有对象
	 * @return
	 */
	public abstract boolean haveNext();

	/**
	 * 移动指针到下一个
	 */
	public abstract void next();

	/**
	 * 取模型对象的表Id
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getID() throws ErrorMessage;

	/**
	 * 取模型对象的表名称
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getName() throws ErrorMessage;

	/**
	 * 取模型对象的表中文名称
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getCnName() throws ErrorMessage;

	/**
	 * 取模型对象的表说明
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getDesc() throws ErrorMessage;
	
	/**
	 * 新建实例
	 * @param userId 用户id
	 * @param modelType 模型对象类型
	 * @return 模型对象类型下所有表的实例
	 * @throws ErrorMessage
	 */
	public static MdTableAll getNewInstance(String userId,String modelType) throws ErrorMessage{
		return (MdTableAll)get(MdTableAll.class.getSimpleName(), userId, modelType);
	}
	
	/** 表id字段名 */
	public abstract String getOID();
	
	/** 表名称字段名 */
	public abstract String getTABLE_NAME();
	
	/** 表中文名字段名 */
	public abstract String getTABLE_CNAME() ;
	
	/** 表说明字段名 */
	public abstract String getTABLE_DESC();

}